package main

import (
	"fmt"
	"protobuf/grpc_demo"
	"time"
)

func main() {
	// TODO micro server
	// go func() {
	// 	var err = micro_demo.MicroServer()
	// 	if err != nil {
	// 		logrus.Error("micro server:", err)
	// 	}
	// }()

	// TODO micro client
	// time.Sleep(2 * time.Second)
	// for i := 0; i < 10; i++ {
	// 	err := micro_demo.MicroClient(int32(i))
	// 	if err != nil {
	// 		logrus.Fatal(err)
	// 	}

	// }

	// TODO http micro server
	// 请求了 micro 的服务, 故需要执行 micro.MicroServer(), 否则报错
	// err := micro_demo.HttpMicro()
	// if err != nil {
	// 	logrus.Fatal(err)
	// }

	// TODO PUBSUB
	// go micro_demo.Publish()
	// go micro_demo.Subscribe()

	// TODO reg consul
	// go func() {
	// 	err := consul_demo.RegConsul()
	// 	if err != nil {
	// 		logrus.Error(err.Error())
	// 	}
	// }()
	// time.Sleep(1 * time.Second)
	// consul_demo.RunConsul()
	// err := consul_demo.Reg()
	// if err != nil {
	// 	logrus.Error(err.Error())
	// }

	// TODO get config from consul
	// strCfg, err := consul_demo.GetConsulConfig("localhost", 8500, "/micro/config", "mysql")
	// if err != nil {
	// 	logrus.Error(err.Error())
	// }
	// logrus.Info(strCfg)

	// TODO grpc server
	go func() {
		fmt.Println("grpc starting ...")
		// err := server.RunServer()
		err := grpc_demo.RunServer()
		if err != nil {
			fmt.Println(err)
		}
	}()
	time.Sleep(1 * time.Second)
	fmt.Println("client starting ...")
	err := grpc_demo.RunClient()
	if err != nil {
		fmt.Println(err)
	}

	select {}
}
